const moduleA = {
  state() {
    return {
      count: 10,
      name: "jungege",
      sex: 1,
      likes: ["洗脚", "dota", "大宝剑"],
      nums: [1, 2, 3, 4, 5, 6, 7, 8, 9],
    };
  },
  // getters就相当于是组件里面的computed
  getters: {
    oddNums(state) {
      return state.nums.filter((item) => item % 2);
    },
    // 可以使用柯里化函数的方式，对getters进行传参
    customNums: (state) => (v) => {
      return state.nums.filter((item) => {
        if (v === 1) {
          return item % 2;
        } else {
          return !(item % 2);
        }
      });
    },
  },
  // mutations是唯一可以修改仓库的state的地方
  // 里面写的是函数,可以接受一个state作为参数
  // mutations的函数必须是同步函数
  // 开发工具是在mutation函数触发的时候产生记录
  // 如果是异步就不知道要改成什么数据，导致开发工具的记录会延迟一步
  mutations: {
    addcount(state, payload) {
      // setTimeout(() => {
      state.count += payload.n;
      // }, 2000);
    },
    fn(state, payload) {
      state.count += payload;
    },
  },
  // actions是写异步函数的
  actions: {
    asyncAddCount({ commit }, payload) {
      setTimeout(() => {
        commit("fn", payload);
      }, 2000);
    },
  },
};

export default moduleA;
